package com.seezoon.infrastructure.tcp.common;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 解码时候用
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MessageField {

    /**
     * 字符串长度，或者组数长度,默认：long-4,int-2,short-1
     *
     * @return
     */
    int length() default 0;

    /**
     * 参考字段，用于依赖其他字段计算长度
     *
     * @return
     */
    String ref() default "";

    /**
     * 是string 有的有编码
     *
     * @return
     */
    Encoding encoding() default Encoding.UTF8;

    /**
     * 描述
     *
     * @return
     */
    String desc();

}
